Scroll to navigation

fork(2) 2007-10-27-16:31 fork(2)

Назва

fork — створює процес-нащадок.

Синопсис


#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);

Опис

fork створює процес-нащадок, котрий відрізняється від батьківського лише своїм ідентифікатором (PID), ідентифікатором батьківського процесу (PPID), а також фактом, що використання ресурсів встановлюється в 0. Замки на файли та поточні сиґнали не успадковуються.

Під Linux fork реалізовано з використанням «copy-on-write» — копії сторінок пам'яті робляться лише при записі в них. Отже, ціною брунькування є лише час на копіювання батьківської таблиці сторінок і створення унікальної структури задачі для нащадка.

Повернене значення

В разі успіху, в потік виконання батьківського процесу повертається PID процесу-нащадка, а в потік нащадка — 0. При невдачі в батьківський контекст повертається -1, а змінна errno отримує відповідне значення.

Помилки


fork не може розмістити достатньо пам'яті для копії батьківських таблиць сторінок і розмістити структуру задачі для нащадка.

fork не зміг розмістити необхідні структури ядра через нестачу пам'яті.

Відповідність стандартам

Виклик fork відповідає SVr4, SVID, POSIX, X/OPEN, BSD4.3.

Дивіться також

clone (2), execve (2), vfork (2), wait (2).

2007-10-27-16:31 © 2005-2007 DLOU, GNU FDL